package demo01;

/*
 * 接口就是多个类的公共规范，是一种引用数据类型。
 * 其最重要的内容要素就是抽象方法。
 * 定义一个接口的格式：
 * public interface 接口名称 {
 *      // 方法
 * }
 * 
 * 备注：换成关键字interface之后，编译生成的字节码文件仍然是：.java --> .class
 * 
 * Java 7中，接口可以包含的内容：
 * 1. 常量
 * 2. 抽象方法
 * 
 * Java 8中，额外可以包含：
 * 3. 默认方法
 * 4. 静态方法
 * 
 * Java 9中，额外可以包含：
 * 5. 私有方法
 * 
 * 接口使用步骤：
 * 1. 接口不能直接使用，必须有一个实现类来“实现”该接口
 *  格式：
 *  public class 实现类名称 implements 接口名称 {
 *      // ...
 *  }
 * 2. 接口的实现类必须覆盖重写接口中所有地抽象方法
 *  实现：去掉abstract关键字，加上方法体大括号。
 * 3. 创建实现类对象，进行使用
 * 
 * 注意事项：
 * 如果实现类并没有覆盖重写接口中所有的抽象方法，那么这个实现类自己就必须是个抽象类。
 */
public class Demo01Interface {
    public static void main(String[] args) {
        // 错误写法！不能直接new接口对象使用
        // MyInterfaceAbstract inter = new MyInterfaceAbstract();

        // 创建实现类的对象使用
        MyInterfaceAbstractImpl impl = new MyInterfaceAbstractImpl();
        impl.methodAbs1(); // 这是方法1！
        impl.methodAbs2(); // 这是方法2！
        impl.methodAbs3(); // 这是方法3！
        impl.methodAbs4(); // 这是方法4！
    }
}
